#include <iostream>
#include <string>
#include <stack>
using namespace std;

bool is_open(char c) {
    return c== '(' || c == '[' || c == '{' || c == '{' || c == '<';
}

bool is_pr(char op, char cl) {
    return cl - op >= 1 && cl - op <= 2;
}
 bool is_corect(const string s) {
     stack<char> st;
    for (auto c: s){
        if (is_open(c)) {
            st.push(c);
        } else if (!st.empty() && is_pr(st.top(), c)){
            st.pop();
        } else {
            return false;
        }
    }
    return st.empty();
 }
 int main() {
     string str;
     cin >> str;
     if (is_corect(str)) {
         cout << "YES" << endl;
     } else {
         cout << "NO" << endl;
     }
     return 0;
 }